home *** CD-ROM | disk | FTP | other *** search
/ PC Elektro 3 / PC-Elektro-3-cd1.bin / KBan 2.0 / KBANSRC.LZH / SRC / PROG / NETLIST / SEG.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-23  |  887 b   |  33 lines

  1. // the declaration of class SEGMENT
  2. // Copyright (C) 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
  3.  
  4. #ifndef _SEG_H_
  5. #define _SEG_H_
  6.  
  7. #include "../common/base.h"
  8. #include "xydbl.h"
  9.  
  10. class SEGMENT {
  11.   XY_DBL m_p1;
  12.   XY_DBL m_p2;
  13. public:
  14.   SEGMENT(const XY_DBL& p1, const XY_DBL& p2)
  15.     : m_p1(p1), m_p2(p2) {}
  16.   const XY_DBL& p1() const { return m_p1; }
  17.   const XY_DBL& p2() const { return m_p2; }
  18.   bool is_vertical() const { return m_p1.x() == m_p2.x(); }
  19.   bool is_x_on_segment(double x) const {
  20.     return (minimum(m_p1.x(), m_p2.x()) <= x)
  21.         && (x <= maximum(m_p1.x(), m_p2.x()));
  22.   }
  23.   bool is_y_on_segment(double y) const {
  24.     return (minimum(m_p1.y(), m_p2.y()) <= y)
  25.         && (y <= maximum(m_p1.y(), m_p2.y()));
  26.   }
  27.   XY_DBL get_vector() const {
  28.     return XY_DBL(m_p2.x() - m_p1.x(), m_p2.y() - m_p1.y());
  29.   }
  30. };
  31.  
  32. #endif /* _SEG_H_ */
  33.